//
// Created by zuo on 2024/7/5.
// 题目链接 https://www.lanqiao.cn/problems/3225/learning/?page=1&first_category_id=1&problem_id=3225
//

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 1e6 + 3;
ll a[N]; // 初始化都为0

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    // // 冒泡排序  n2 -> 1e3 规模的问题
    // for (int i = n - 1; i >= 0; i--) // 每次确定一个最大值（最小值）
    // {
    //     for (int j = 0; j < i; j++) // 只需要确定 0~i-1 的大小就行
    //     {
    //         if (a[j] > a[j + 1]) swap(a[j], a[j + 1]);
    //     }
    // }

    // // 选择排序  n2 -> 1e3 规模的问题
    // for (int i = n - 1; i >= 0; i--) // 每次确定一个最大值（最小值）
    // {
    //     int max_idx = i;
    //     for (int j = 0; j <= i; j++) // 按索引下标  所以需要取到 i
    //     {
    //         if (a[j] > a[max_idx]) max_idx = j;
    //     }
    //     swap(a[max_idx], a[i]);
    // }

    // // 插入排序  n2 -> 1e3 规模的问题
    // for (int i = 0; i < n; i++) // 每次要插入的位置
    // {
    //     int val = a[i], j;
    //     for (j = i; j > 0 && a[j - 1] > val; j--)   // 每次确定的位置 之前的位置都是有序的
    //     {
    //         a[j] = a[j - 1];
    //     }
    //     a[j] = val;
    // }

    for (int i = 0; i < n; i++) cout << a[i] << " \n"[i == n - 1];
    return 0;
}
